Reducing development and maintenance time is an increasingly important goal for developers of enterprise software. Automatic code generation is one approach to achieving this goal. Enterprise software applications are usually comprised of millions of lines of computer code and have traditionally required teams of programmers several years to create, test and debug. Today, an automatic code generator may be used to capture knowledge and business rules for an enterprise software application and generate the millions of lines of codes within seconds in any desired computer language and for any platform. An example of an automatic code generator includes GeneXus, a product of ARTech Consultores S.R.L.
Ironically, automatic code generators, which are themselves enterprise-level software applications, are developed from scratch using standard development tools and programming techniques, not using automatic code generation. This means that all the benefits attributable to automatic code generators do not apply to the development process of automatic code generators.
Another deficiency of conventional automatic code generators is the discontinuity that inevitably results between development and maintenance of enterprise software. Traditionally, an automatic code generator produces computer code for a target platform based on the captured knowledge and business rules. Once the computer code is generated, programmers customize the code to fix bugs, add new features, and the like. This breaks the continuity between the enterprise software and the automatic code generator. Subsequent development or maintenance on the enterprise software must be done the traditional way without the benefit of the automatic code generator.
The discontinuity problem is exacerbated where an automatic code generator is used to create several different software applications for an enterprise, all of which are subsequently modified or updated in various ways outside of the context of the automatic code generator. If a new feature is later desired for all of the software applications, programmers must independently code the new feature into each application, thereby increasing development time and the possibility of bugs and incompatibility between applications.
What is needed is a way to bring all the benefits provided by an automatic code generator to the automatic code generator, itself, so that any enterprise software applications generated thereby can always rely on the automatic code generator to regenerate any computer code that these applications require. Furthermore, what is needed is a way for programmers to add a new feature only once and have the code generator automatically supply that feature to all of the other applications.